"""
1.在被搜索模型类SKU所在应用中,新建固定名字search_indexes.py文件
2.在search_indexes.py中定义一个索引模型类SKUIndex,索引模型类名称格式：<被搜索的模型类名>Index
3.定义模板文件
"""
from haystack import indexes
from .models import SKU


class SKUIndex(indexes.SearchIndex, indexes.Indexable):
    """SKU索引数据模型类"""
    # 约定俗称的字段text,类型为indexes.CharField
    # document=True表明：该字段决定，我们可以根据SKU模型类哪些字段进行全文检索
    # use_template=True表明：通过模板文件的方式来指定SKU模型类属性
    # 在 templates/search/indexes/goods/sku_text.txt(模板文件) 文件中定义用于全文检索的字段
    text = indexes.CharField(document=True, use_template=True)

    def get_model(self):
        """返回建立索引的模型类"""
        return SKU

    def index_queryset(self, using=None):
        """返回要建立索引的数据查询集"""
        return self.get_model().objects.filter(is_launched=True)
